Asymmetric Multi-Row Touch Panel Scanning

ABSTRACT

Asymmetric scanning logic implements asymmetric panel scanning by scanning some rows on a touch panel more frequently than other rows. Note that although an entire row at a time may be driven, if only particular pixels in the row are of interest (e.g., included in any region of interest for focused asymmetric scanning), then circuitry may power down the receivers for the columns in which the pixels exist to save power. The asymmetric scanning logic facilitates focused attention to specific areas of interest on the touch panel, to compensate, for example, for high noise or low signal strength in those areas of interest.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/416,327, filed Mar. 9, 2012, which claims priority to, andincorporates by reference, U.S. Provisional Application Ser. No.61/584,494, Titled Asymmetric Multi-Row Touch Panel Scanning, filed Jan.9, 2012.

TECHNICAL FIELD

This disclosure relates to methods and apparatus for capacitive touchscreen devices.

BACKGROUND

Continual development and rapid improvement in portable devices hasincluded the incorporation of touch screens in these devices. A touchscreen device responds to a user's touch to convey information aboutthat touch to a control circuit of the portable device. The touch screenis conventionally combined with a generally coextensive display devicesuch as a liquid crystal display (LCD) to form a user interface for theportable device. The touch screen also operates with a touch controllercircuit to form a touch screen device. In other applications using touchsensing, touch pads may also be part of the user interface for a devicesuch as a personal computer, taking the place of a separate mouse foruser interaction with the onscreen image. Relative to portable devicesthat include a keypad, rollerball, joystick or mouse, the touch screendevice provides advantages of reduced moving parts, durability,resistance to contaminants, simplified user interaction and increaseduser interface flexibility.

Despite these advantages, conventional touch screen devices have beenlimited in their usage to date. For some devices, current drain has beentoo great. Current drain directly affects power dissipation which is akey operating parameter in a portable device. For other devices,performance such as response time has been poor, especially whensubjected to fast motion at the surface of the touch screen. Somedevices do not operate well in environments with extreme conditions forelectromagnetic interference and contaminants that can affectperformance.

Further limitations and disadvantages of conventional and traditionalapproaches will become apparent to one of ordinary skill in the artthrough comparison of such approaches with aspects of the presentdisclosure as set forth in the remainder of this application and withreference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The system may be better understood with reference to the followingdrawings and description. In the figures, like reference numeralsdesignate corresponding parts throughout the different views.

FIG. 1 is an example block diagram of a portable device.

FIG. 2A is an example of a top view of a portable device.

FIG. 2B shows a cross-sectional view of the portable device.

FIG. 3 is a simplified diagram of an exemplary mutual capacitance touchpanel for use in the portable device of FIGS. 1 and 2.

FIG. 4 shows an example block diagram of the touch front end of theportable device of FIG. 1.

FIG. 5 shows an example first sample asymmetric scan map.

FIG. 6 shows an example second sample asymmetric scan map.

FIG. 7 shows an example high-level architecture of the touch front endof the portable device of FIG. 1.

FIG. 8 shows an example simplified capacitive touch panel and relatedcircuitry.

FIG. 9 illustrates an example baseline tracking filter or use in acontroller circuit for a portable device.

FIG. 10 shows an example second variance estimator in conjunction withthe baseline tracking filter of FIG. 9.

FIG. 11 shows an example second variance estimator in conjunction withthe baseline tracking filter of FIG. 9.

FIG. 12 shows an example smartphone that employs orthogonal multi-rowstimulation logic and asymmetric scanning logic.

FIG. 13 shows an example graph of number of rows stimulated versusoptimal column sum.

FIG. 14 shows an example of the logic that the orthogonal multi-rowstimulation logic may implement.

FIG. 15 shows an example of the logic that the asymmetric scan logic mayimplement.

FIG. 16 shows an example of blob prediction.

FIG. 17 shows an example of scanning an 8 row by 9 column touch panelwith orthogonal signals.

DETAILED DESCRIPTION

Referring now to FIGS. 1 and 2, FIG. 1 shows a block diagram of aportable device 100. FIG. 2 shows one embodiment of a portable device100 according to the block diagram of FIG. 1. As shown in FIG. 1, theportable device 100 includes a capacitive touch panel 102, a controllercircuit 104, a host processor 106, input-output circuit 108, memory 110,a liquid crystal display (LCD) 112 and a battery 114 to provideoperating power.

FIG. 2 includes FIG. 2A which shows a top view of the portable device100 and FIG. 2B which shows a cross-sectional view of the portabledevice 200 along the line B-B′ in FIG. 2A. The portable device may beembodied in a wide range of devices with a touch sensitive display,including, as examples, a tablet computer, a smart phone, music player,or a fixed device such as a kiosk.

The portable device 100 includes a housing 202, a lens or clear touchsurface 204 and one or more actuatable user interface elements such as acontrol switch 206. Contained within the housing are a printed circuitboard 208 circuit elements 210 arranged on the printed circuit board 208and as are shown in block diagram form in FIG. 1. The capacitive touchpanel 102 is arranged in a stack and includes a drive line 212, aninsulator 214 and a sense line 216. The insulator electrically isolatesthe drive line 212 and other drive lines arranged parallel to the driveline from the sense lines 216. Signals are provided to one or more ofthe drive lines 212 and sensed by the sense lines 216 to locate a touchevent on the clear touch surface 204. The LCD 112 is located between theprinted circuit board 208 and the capacitive touch panel 102.

As is particularly shown in FIG. 2A, the capacitive touch panel 102 andthe LCD 112 may be generally coextensive and form a user interface forthe portable device. Text and images may be displayed on the LCD forviewing and interaction by a user. The user may touch the capacitivetouch panel 102 to control operation of the portable device 100. Thetouch may be by a single finger of the user or by several fingers, or byother portions of the user's hand or other body parts. The touch mayalso be by a stylus gripped by the user or otherwise brought intocontact with the capacitive touch panel. Touches may be intentional orinadvertent. In another application, the capacitive touch panel 102 maybe embodied as a touch pad of a computing device. In such anapplication, the LCD 112 need not be coextensive (or co-located) withthe capacitive touch panel 102 but may be located nearby for viewing bya user who touches the capacitive touch panel 102 to control thecomputing device.

Referring again to FIG. 1, the controller circuit 104 includes a digitaltouch system 120, a processor 122, memory including persistent memory124 and read-write memory 126, a test circuit 128 and a timing circuit130. In one embodiment, the controller circuit 104 is implemented as asingle integrated circuit including digital logic and memory and analogfunctions.

The digital touch subsystem 120 includes a touch front end (TFE) 132 anda touch back end (TBE) 134. This partition is not fixed or rigid, butmay vary according to the high-level function(s) that each blockperforms and that are assigned or considered front end or back endfunctions. The TFE 132 operates to detect the capacitance of thecapacitive sensor that comprises the capacitive touch-panel 102 and todeliver a high signal to noise ratio (SNR) capacitive image (or heatmap)to the TBE 134. The TBE 134 takes this capacitive heatmap from the TFE132 and discriminates, classifies, locates, and tracks the object(s)touching the capacitive touch panel 102 and reports this informationback to the host processor 106. The TFE 132 and the TBE 134 may bepartitioned among hardware and software or firmware components asdesired, e.g., according to any particular design requirements. In oneembodiment, the TFE 132 will be largely implemented in hardwarecomponents and some or all of the functionality of the TBE 134 may beimplemented by the processor 122.

The processor 122 operates in response to data and instructions storedin memory to control the operation of the controller circuit 104. In oneembodiment, the processor 122 is a reduced instruction set computer(RISC) architecture, for example as implemented in an ARM processoravailable from ARM Holdings. The processor 122 receives data from andprovides data to other components of the controller circuit 104. Theprocessor 122 operates in response to data and instructions stored inthe persistent memory 124 and read-write memory 126 and in operationwrites data to the memories 124, 126. In particular, the persistentmemory 124 may store firmware data and instructions which are used byany of the functional blocks of the controller circuit 104. These dataand instructions may be programmed at the time of manufacture of thecontroller 104 for subsequent use, or may be updated or programmed aftermanufacture.

The timing circuit 130 produces clock signals and analog, time-varyingsignals for use by other components of the controller circuit 104. Theclock signals include digital clock signal for synchronizing digitalcomponents such as the processor 122. The time-varying signals includesignals of predetermined frequency and amplitude for driving thecapacitive touch panel 102. In this regard, the timing circuit 130 mayoperate under control or responsive to other functional blocks such asthe processor 122 or the persistent memory 124.

FIG. 3 shows a diagram of a typical mutual capacitance touch panel 300.The capacitive touch panel 300 models the capacitive touch panel 102 ofthe portable device of FIGS. 1 and 2. The capacitive touch panel 300 hasN_(row) rows and N_(col) columns (N_(row)=4, N_(col)=5 in FIG. 3). Inthis manner, the capacitive touch panel 300 createsN_(row)-times-N_(col) mutual capacitors between the N_(row) rows and theN_(col) columns. These are the mutual capacitances that the controllercircuit 104 commonly uses to sense touch, as they create a natural gridof capacitive nodes that the controller circuit 104 uses to create thetypical capacitive heatmap. However, it is worth noting that there are atotal of (N_(row)+N_(col))—or (N_(row)+N_(col)+2) nodes if a touchingfinger or stylus and ground node in the capacitive touch panel 300 areincluded. A capacitance exists between every pair of nodes in thecapacitive touch panel 300.

Stimulus Modes

The capacitive touch panel 300 can be stimulated in several differentmanners. The way in which the capacitive touch panel 300 is stimulatedimpacts which of the mutual capacitances within the panel are measured.A list of the modes of operation is detailed below. Note that the modesdefined below only describe the manner in which the TFE 132 stimulatesthe panel.

Row-column (RC) mode is a first operating mode of a mutual capacitivesensor. In RC mode, the rows are driven with transmit (TX) waveforms andthe columns are connected to receive (RX) channels of the TFE 132.Therefore, the mutual capacitors between the rows and the columns aredetected, yielding the standard N_(row)×N_(col) capacitive heatmap. Inthe example shown in FIG. 3, RC mode measures the capacitors labelCr_(<i>), C_(<j>), where <i> and <j> are integer indices of the row andcolumn, respectively. Generally, there is no incremental value insupporting column-row (CR) mode, (e.g. driving the columns and sensingthe rows), as it yields the same results as RC mode.

Self-capacitance column (SC) mode is a self-capacitance mode that may besupported by the controller 102. In SC mode, one or more columns aresimultaneously driven and sensed. As a result, the total capacitance ofall structures connected to the driven column can be detected.

In column-listening (CL) mode, the RX channels are connected to thecolumns of the capacitive touch panel 102 and the transmitter is turnedoff. The rows of the capacitive touch panel 102 will either be shortedto a low-impedance node (e.g. AC ground), or left floating (e.g.high-impedance). This mode is used to listen to the noise andinterference present on the panel columns. The output of the RX channelswill be fed to a spectrum estimation block (e.g. FFT block) in order todetermine the appropriate signal frequencies to use and the optimalinterference filter configuration, as will be described in furtherdetail below.

Timing Terminology

Some terminology is introduced for understanding the various timescalesby which results are produced within the TFE 132. The TFE 132 produces acapacitive heatmap by scanning all desired nodes of the capacitive touchpanel 102 (e.g., all of the nodes, or some specified or relevant subsetof all of the nodes). This process may be referred to as a frame scan;the frame scan may run at a rate referred to as the frame rate. Theframe rate may be scalable. One exemplary frame rate include a framerate of 250 Hz for single touch and a panel size less than or equal to5.0 inches in size. A second exemplary frame rate is 200 Hz for singletouch and a panel size greater than 5.0 inches. A third exemplary framerate is 120 Hz minimum for 10 touches and a panel size of 10.1 inches.Preferably, the controller 104 can support all of these frame rates andthe frame rate is configurable to optimize tradeoff of performance andpower consumption for a given application. The term scan rate may beused interchangeably with the term frame rate.

The controller circuit 104 may assemble a complete frame scan by takinga number of step scans. Qualitatively, each step scan may result in aset of capacitive readings from the receivers, though this may not bestrictly done in all instances. The controller circuit 104 may performeach step scan at the same or different step rate. For a row/column (RC)scan, where the transmitters are connected to the rows and the receiversare connected to the columns, it will take N_(row) step scans to createa full frame scan. Assuming a tablet-sized capacitive touch panel 102with size 40 rows×30 columns, the step rate may be at least 8 kHz toachieve a 200 Hz frame rate.

For all mutual-capacitance scan modes a touch event causes a reductionin the mutual capacitance measured. The capacitive heatmap that iscreated by the TFE 132 will be directly proportional to the measuredcapacitance. Therefore, a touch event in these scan modes will cause areduction in the capacitive heatmap. For all self-capacitance scanmodes, a touch event causes an increase in the capacitance measured. Thecapacitive heatmap that is created by the TFE 132 will be directlyproportional to the measured capacitance. Therefore, a touch event inthese scan modes will cause a local increase in the capacitive heatmap.

Referring now to FIG. 4, it shows a block diagram of the touch front end(TFE) 132 of FIG. 1. In the illustrated embodiment, the AFE 132 includes48 physical transmit channels and 32 physical receive channels.Additionally, some embodiments of the AFE 132 may contain circuitry suchas power regulation circuits, bias generation circuits, and clockgeneration circuitry. To avoid unduly crowding the drawing figure, suchmiscellaneous circuitry is not shown in FIG. 4.

The TFE 132 includes transmit channels 402, a waveform generation block404, receive channels 406 and I/Q scan data paths 408. The transmitchannels 402 and the receive channels 406 collectively may be referredto as the analog front end (AFE) 400. The TFE 132 further includes, forthe in-phase results from the I/Q scan data path, a receive datacrossbar multiplexer 410, a differential combiner 412 and an in-phasechannel assembly block 414. Similarly for the quadrature results, theTFE 132 includes a receive data crossbar multiplexer 416, a differentialcombine 418 and an in-phase channel assembly block 420. The in-phaseresults and the quadrature results are combined in an I/Q combiner 422.The absolute value of the data is provided to a row and columnnormalizer 424 and then made available to the touch back end (TBE) 134.Similarly, the heatmap phase information from the I/Q combiner 422 isprovided to the TBE 134 as well.

The TFE 132 further includes a scan controller 426, read controlcrossbar multiplexer 428 and transmit control crossbar multiplexer 430.Further, the TFE 132 includes a spectrum estimation processor 426 aswill be described below in further detail. The spectrum estimationprocessor 426 provides a spectrum estimate to the TBE 134. The scancontroller 426 receives high level control signals from the TBE 134 tocontrol which columns are provided with transmit signals and which rowsare sensed.

The receive data crossbar multiplexers 410, 416 and the receive controlcrossbar multiplexer 428 together for a receive crossbar multiplexer.These two multiplexers are used to logically remap the physical receiveTFE channels by remapping both their control inputs and data outputs. Assuch, the control signals routed to both multiplexers may be identical,as the remapping performed by the receive data multiplexers 410, 416 andthe receive control multiplexer 428 needs to be identical.

The receive data crossbar multiplexers 410, 416 sit between the outputof the I/Q scan data path 408 and the heatmap assembly blocks 414, 420.The purpose of the receive data crossbar multiplexers 410, 416 is toenable the logical remapping of the receive channels. This in turnallows for logical remapping of the electrical connectors such as pinsor balls which connect the integrated circuit including the controller104 to other circuit components of the portable device 100. This will inturn enable greater flexibility in routing a printed circuit board fromthe integrated circuit including the controller 104 to the capacitivetouch panel 102.

Since the I/Q scan data path 408 outputs complex results, the receivecrossbar multiplexer may be able to route both the I and Q channels ofthe scan data path output. This can easily be achieved by instantiatingtwo separate and identical crossbar multiplexers 410, 416. These twomultiplexers will share the same control inputs.

The receive control crossbar multiplexer 428 sits between the scancontroller 426 and the AFE 400. It is used to remap the per-channelreceive control inputs going into the AFE 400. The structure of thereceive control crossbar multiplexer 428 may be the same as for thereceive data crossbar multiplexer 410, 416.

Since the Rx Ctrl crossbar is used in conjunction with the Rx Datacrossbar to logically remap the RX channels, it may be programmed inconjunction with the Rx data crossbar. The programming of the receivecontrol multiplexer 428 and the receive data crossbar multiplexers 410,416 are not identical. Instead the programming may be configured so thatthe same AFE to controller channel mapping achieved in one multiplexeris implemented in the other.

The scan controller 426 forms the central controller that facilitatesscanning of the capacitive touch panel 102 and processing of the outputdata in order to create the capacitive heatmap. The scan controller 426operates in response to control signals from the TBE 134.

Scan Controller Modes of Operation

The scan controller 426 may support many different modes. A briefdescription of each mode is listed below. Switching between modes istypically performed at the request of the processor 122 (FIG. 1), with afew exceptions noted below.

Active scan mode is considered the standard mode of operation, where thecontroller 104 is actively scanning the capacitive touch panel 102 inorder to measure the capacitive heatmap. Regardless of what form ofpanel scan is utilized, the scan controller 426 steps through a sequenceof step scans in order to complete a single frame scan.

In single-frame mode, the controller initiates one single frame scan atthe request of the processor 122. After the scan is complete, thecapacitive heatmap data is made available to the processor 122 and thescan controller 426 suspends further operation until additionalinstructions are received from the processor 426. This mode isespecially useful in chip debugging.

In single-step mode, the controller initiates one single step scan atthe request of the processor 122. After the scan is complete, theoutputs of the scan data path 408 are made available to the processor122 and the scan controller 426 suspends further operation untiladditional instructions are received from the processor 122. This modeis especially useful in chip testing and debugging.

Idle scan mode is a mode initiated by the processor 122 in order to runthe controller 104 in a lower-performance mode. Typically, this modewill be selected when the controller 122 does not detect an active touchon the screen of the capacitive touch panel 102, but still wantsreasonably fast response to a new touch. Therefore, the controller 122is still active and capable of processing the heatmap data produced bythe TFE 132.

The primary differences between active scan mode and idle scan mode aretwofold. First, the frame rate in idle scan mode will typically beslower than that used in active scan mode. Duty cycling of the AFE 400and other power reduction modes will be used in order to reduce totalpower consumption of the controller 104 during idle scan. Second, thelength of time used to generate a single frame scan may be shorter inidle scan mode than in active scan mode. This may be achieved by eithershortening the duration of a step scan or by performing fewer step scansper frame. Reducing total frame scan time can further reduce power atthe expense of reduced capacitive heatmap signal to noise ratio (SNR).

Spectrum estimation mode is used to measure the interference and noisespectrum coupling into the receive channels. This measurement is thenanalyzed by the processor 122 to determine the appropriate transmitfrequency and calculate the optimal filter coefficients for the filterswithin the scan data path 408. This mode is typically used with theColumn Listening mode.

In spectrum estimation mode, most of the blocks of the TFE 132 in FIG. 4are disabled. The scan controller 426, the AFE 400, and the spectrumestimation preprocessor 432 may be used. The transmit channel 402 of theAFE 400 is powered down, and the receive channel 406 of the AFE 400records the background noise and interference signals that couple intothe capacitive touch panel 102. The receive data from all of thechannels of the AFE 400 are routed to the spectrum estimationpreprocessor 432, which performs mathematical preprocessing on thisdata. The output of the spectrum estimation preprocessor 432 will be anN-point vector of 16-bit results, where N is approximately 200. Theoutput of the spectrum estimation preprocessor 432 is handed off to theprocessor 122 for further analysis and determination of the appropriatetransmit frequency to use. This process is described in greater detailbelow.

In addition to the functional modes described above, the controller 104may have a set of sleep modes, where various functional blocks in thecontroller 104 are disabled and/or powered down completely.

A frame scan includes of a series of step scans. The structure of eachstep scan may be identical from step scan to the next within a givenframe scan; however, the exact values of control data vary from stepscan to step scan. Furthermore, the operation of a given frame scan maybe determined by configuration parameters and may or may not affected bydata values measured by the receive channel. One example of the framescan logic that the controller circuit 104 may implement is shown below.

// Initialization Set DDFS parameters; Clear heatmap_memory; // Stepscan loop For step_idx = 1 to num_step_scans {  // Configure circuitsaccording to step_idx  Set scan_datapath_control toscan_datapath_parameters[step_idx];  Assert Rx_reset and wait TBD clockcycles;  Set AFE_control_inputs to AFE_parameters[step_idx];  DeassertRx_reset and wait TBD clock cycles;  // Run step scan and collect data Send start signal to DDFS and scan data path;  Wait for TBD clockcycles for step scan to complete;  Pass datapath_results[step_idx] toheatmap assembly block  // Incremental heatmap processing } // step_idxloop

The incremental heatmap processing operation is described in greaterdetail below.

Multi-Transmit Support and Block Stimulation of the Panel

In order to achieve improved SNR in the capacitive heatmap, thecontroller circuit 104 provides support for multi-transmit (multi-Tx)stimulation of the capacitive control panel 102. Multi-Tx simulation (orMulti-Tx) means that multiple rows of the panel are simultaneouslystimulated with the transmit (Tx) signal, or a polarity-inverted versionof the Tx signal, during each step scan. The number and polarity of therows stimulated, may be controlled through control registers in the AFE400. The number of rows simultaneously stimulated during multi-Tx isdefined as a parameter N_(multi). N_(multi) may be a constant value fromstep-to-step within a given frame and also from frame-to-frame.

If N_(multi) rows are simultaneously stimulated during a step scan, itwill take at least N_(multi) step scans to resolve all the pixelcapacitances being stimulated. Each receiver has N_(multi) capacitancesbeing stimulated during a scan step. Hence there are N_(multi) unknowncapacitances, requiring at least N_(multi) measurements to resolve thesevalues. During each of these N_(multi) steps, the polarity control ofthe Tx rows will be modulated by a set of Hadamard sequences. Once thisset of N_(multi) (or more) step scans is complete, the next set ofN_(multi) rows can be stimulated in the same fashion, as N_(multi) willalmost always be less than the number of actual rows in the capacitivetouch panel 102.

In this way, the processing of the entire capacitive touch panel 102occurs in blocks, where N_(multi) rows of pixels are resolved during onebatch of step scans, and then the next N_(multi) rows of pixels areresolved in the next batch of step scans, until all the panel rows arefully resolved.

In most scenarios, the number of panel rows will not be an exactmultiple of N_(multi). In these situations, the number of rows scannedduring the final block of rows will be less than N_(multi). However,N_(multi) scan steps may be performed on these remaining rows, usingspecified non-square Hadamard matrices.

Differential Scan Mode

Differential scan mode is an enhancement to normal scanning mode,whereby the frame scan operation is modified to exploit the correlationof the interference signal received across adjacent receive channels. Inthis mode, the normal frame scan methodology is performed; however thenumber of step scans used to assemble a single frame is doubled.Conceptually, each step scan in the scan sequence becomes two stepscans: the first is a single-ended or normal step scan with the defaultvalues for the AFE control registers, and the second is a differentialstep scan.

Given N_(RX) receive channels, the differential scan mode yields a totalof 2N_(RX) receiver measurements per aggregate scan step. (e.g. N_(RX)single-ended measurements and N_(RX) differential measurements.) These2N_(RX) measurements are recombined and collapsed into N_(RX) normalmeasurements in the Differential Combiner block 412, 418 shown in FIG.4.

FIG. 7 shows a high-level architecture 700 of the analog front end. Thearchitecture 700 includes a transmit channel 702 providing signals tocolumns of the capacitive touch panel 102 and a receive channel 704sensing signals from the capacitive touch panel 102. The transmitchannel 702 includes a digital to analog converter 706, polarity controlcircuits 708 and buffers 710. The receive channel 704 includes apre-amplifier 712 and analog to digital converter 714.

All transmit channels may be driven by a shared transmit data signallabeled TxDaC in FIG. 7. Each physical transmit channel may also receivea common transmit digital to analog converter clock signal, labeledTxDacClk, to drive the transmit digital to analog converter 706. Theclock signal will come directly from a frequency locked loop blockwithin the TFE 132, and this clock signal will also be routed to thedigital portion of the TFE 132.

Each physical transmit channel may also have its own set ofchannel-specific TxCtrl bits that appropriately control variousparameters of the transmit channel, such as enable/disable, polaritycontrol, and gain/phase control). These TxCtrl bits are not updated atthe TxDacClk rate, but rather are updated between subsequent step scansduring the frame scan operation.

A control signal controls the transmit polarity of each of the 48transmit channels. As will be described in greater detail below, thepolarity of the transmit outputs may be modulated in an orthogonalsequence, with each transmit output having a fixed polarity during eachscan step during a frame scan.

All receive channels will receive a set of common clock signals. Theseclock signals are provided directly from a frequency locked loop blockwithin the TFE 132, and this clock signal is also routed to the digitalportion of the TFE 132. The clock signals routed to the RX channelsinclude the signal RxADCClk which drives the RxADC. A typical clockfrequency for this signal is 48 MHz.

Each physical receive channel will also have its own set ofchannel-specific receive control bits, labeled RxCtrl in FIG. 7, thatappropriately control various parameters of the receive channel, such asenable/disable and gain control. These receive control bits are updatedbetween subsequent step scans during the frame scan operation.

Additionally, there may be a shared set of control settings, labelledRxCtrlUniv in FIG. 7, that will control all receive channelssimultaneously. These registers are primarily composed of genericcontrol bits that will remain constant for a given implementation of thecontroller 104.

There are also one or more reset lines labeled RxReset that are commonto all reset channels. These reset lines may be asserted in a repeatablefashion prior to each scan step.

Waveform Generation

The waveform generation block (WGB) 404 in FIG. 4 generates the transmitwaveform for the TX channels 402. The WGB 404 generates a digital sinewave. Additionally, WGB 404 may generate other simple periodicwaveforms; such as square waves having edges with programmable rise andfall times.

The primary output of the WGB 404 is the data input to the transmitchannels 402 labelled TxDAC in FIG. 4. The WGB 404 receives as inputsignals a clock signal labelled TxDacClk and a signal labelled Start inFIG. 4. Upon receiving the Start signal from the scan controller 426,the WGB 404 begins producing digital waveforms for the duration of asingle step scan. At the conclusion of the step scan, the WGB 404 ceasesoperation and waits for the next start signal from the scan controller426.

The WGB 404 may have some amount of amplitude control, but the WGB 404will typically be operated at maximum output amplitude. Therefore, theperformance requirements listed below only need to be met at max outputamplitude. All signal outputs may be in two's complement format. The WGB404 may also provide arbitrary sine/cosine calculation capabilities forthe scan data path 408 and spectrum estimation preprocessor 432.

The following table lists typical performance for the WGB 404.

Specification Min Nom Max Comment Clock rate 8 MHz Will operate atTxDacClk rate Output 0 Hz — 2 MHz frequency Frequency ctrl — 15 bits —Desired resolution of resolution ~61 Hz. Can be different. # of outputbits — 8 — Output 50% 100% 100% amplitude amplitude amplitude amplitudeAmplitude ctrl —  7 bits — Corresponds to 1% resolution stepsize inamplitude control. DC bias control 0 0 0 All outputs should be balancedaround 0 Output THD −40 dBFs Sine wave mode only Rise/fall time 1 calk —256 calk Square-wave mode cycle @ cycles @ only. Independent 8 MHz 8 MHzcontrol of rise time vs. fall time NOT required.

In FIG. 4, the differential combiner blocks 412, 410 provide thecapability to operate in differential mode, where the receive channels406 alternate step scans between single-ended measurements anddifferential measurements. The purpose of the differential combinerblocks 412, 418 is to combine the N_(RX) single-ended measurements and(N_(RX)−1) differential measurements into a single set of N_(RX) finalresults for use in the heatmap assembly blocks 414, 420 that follow.

The differential combiner blocks 412, 418 are akin to a spatial filter.Let the vector, c, be an N_(rx)-by-1 vector of the capacitances toestimate. In differential mode, you have a vector, s, of single-endedmeasurements and a vector, d, of differential measurements. Hence, anestimate of c, called c_(est), is sought by optimally recombining s andd. Determining the optimal recombination requires substantialcomputation, but simulations have shown that the following recombinationscheme works to within roughly 0.5 dB of optimal performance over theexpected range of operating conditions:

c _(est,n) =a ₁ ·s _(n−2) +a ₂ ·s _(n−1) +a ₃ ·s _(n) +a ₂ ·s _(n+1) +a₁ ·s _(n+2) +b ₁ ·d _(n−1) +b ₂ ·d _(n) −b ₂ −d _(n+1) −b ₁ ·d _(n+2)

where the subscript n indicates result from the n^(th) receiver channel,and 0≦n≦N_(RX)−1.

Furthermore, the coefficients are subject to the following constraints:

0≦a₁,a₂,a₃≦1

a ₃=1−2a ₁−2a ₂

b₁=a₁

b ₂ =a ₁ +a ₂

Given these constraints, it can be observed that the math operationlisted above can be collapsed into two multiplication operations:

c _(est,n) =s _(n) +a ₁·(s _(n−2)−2s _(n) +s _(n+2) +d _(n−1) +d _(n) −d_(n+1) −d _(n+2))+a ₂·(s _(n−1)−2s _(n) +s _(n+1) +d _(n) −d _(n+1))

The equations above assume that the data exists for 2 receivers oneither side of the nth receiver. (e.g. 2≦n≦N_(RX)−3) Therefore, theequations above may be modified for the two outer edge receive channelson either side. The modifications are quite simple. First, replace anynon-existent s_(k) term with the nearest neighboring s_(j) term thatdoes exist. Second, replace any non-existent d_(k) term with 0. Puttingthese rules together and expressing the mathematics in matrix form, weget:

$c_{est} = {\begin{bmatrix}{a_{1} + a_{2} + a_{3}} & a_{2} & a_{1} & 0 & 0 & {- b_{2}} & {- b_{1}} & 0 & 0 \\{a_{1} + a_{2}} & a_{3} & a_{2} & a_{1} & 0 & b_{2} & {- b_{2}} & {- b_{1}} & 0 \\a_{1} & a_{2} & a_{3} & a_{2} & a_{1} & b_{1} & b_{2} & {- b_{2}} & {- b_{1}} \\\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\a_{1} & a_{2} & a_{3} & a_{2} & a_{1} & b_{1} & b_{2} & {- b_{2}} & {- b_{1}} \\0 & a_{1} & a_{2} & a_{3} & {a_{2} + a_{1}} & 0 & b_{1} & b_{2} & {- b_{2}} \\0 & 0 & a_{1} & a_{2} & {a_{3} + a_{2} + a_{1}} & 0 & 0 & b_{1} & b_{2}\end{bmatrix} \cdot {\quad\begin{bmatrix}s_{0} \\\vdots \\s_{N_{RX} - 1} \\d_{1} \\\vdots \\d_{N_{RX} - 1}\end{bmatrix}}}$

Lastly, while the optimal values of {a1 , a2, a3, b1, b2} are dependentupon the precise noise and interference environment, it has been foundthat the following values for these parameters operate near optimalperformance for the expected range of operating environments:

a₁=⅛

a₂= 7/32

a₃= 5/16

b ₁=⅛·k _(ADC)

b ₂= 11/32·k _(ADC)

The parameters b₁ and b₂ above are dependent upon another parameter,k_(ADC). The new parameter, k_(ADC), is dependent upon the value ofreceive channel analog to digital converter gain (Rx_AdcGain) usedduring the differential measurement step, as detailed in the tablebelow:

Rx_AdcGain<1:0> used during differential measurement step k_(ADC) 00 1  01 3/4 10 1/2 11 3/8

These a and b coefficients should be programmable by a control sourcesuch as firmware that is part of the controller 104, but the defaultvalues should be those listed above. The table below indicates thesuggested bit width for each coefficient:

Coefficient Bit width a₁ 5 a₂ 5 a₃ 5 b₁ 6 b₂ 8

The heatmap assembly blocks (HAB) 414, 420 take the step scan outputsfrom the scan data path 408 or differential combiners 412, 418, if used,and assembles the complete capacitive heatmap that is the major outputof the frame scan operation. In order to do so, it may mathematicallycombine all of the step scan outputs in the appropriate manner to createestimates of the capacitance values of the individual capacitive pixelsin the capacitive touch panel 102.

As shown in FIG. 4, there are two separate and identical instantiationsof the HAB. A first HAB 414 is for the I-channel data and a second HAB420 is for the Q-channel data. Each HAB 414, 418 operates on the eitherthe I-channel or Q-channel data in order to create either an I-channelor a Q-channel capacitive heatmap.

In order to demonstrate the mathematics that may apply for heatmapassembly, an example 4×5 capacitive touch panel 800 is illustrated inFIG. 8. In this example, only the capacitive pixels in column 1 areanalyzed, but the same principle can be easily extended to each of thefive columns in the example capacitive touch panel 800. In particular,the output of receive column j is only affected by capacitance pixels incolumn j.

The example capacitive touch panel 800 includes a touch panel 802, atransmit digital to analog converter (TxDAC) 804, transmit buffers 806,808, 810, 812, and a receive analog to digital converter 814. Thetransmit buffers 806, 808, 810, 812 each have an associated multiplier816, 818, 820 822, respectively. The multipliers 816, 818, 820 822operate to multiply the applied signal from the TxDAC by either +1 or−1.

In the example of FIG. 8, a single TxDAC waveform is sent to all fourtransmit buffers 806, 808, 810, 812. However, each buffer multipliesthis waveform by either +1 or −1 before transmitting it onto the row ofthe touch panel 802. For a given step scan (indicated by the subscript“step_idx”), each value of Hi,step_idx is held constant. But forsubsequent step scans in the scan sequence, these values may change.Therefore, at a given step index, the voltage received at m^(th) Rxchannel is:

$V_{{step\_ idx},m} = {{V_{TX} \cdot {RxGain}_{m}}{\sum\limits_{n = 0}^{{NumRows} - 1}{H_{n,{step\_ ids}} \cdot C_{n,m}}}}$

where V_(TX) is the amplitude of the transmit signal and RxGain_(m) isthe gain of the receive channel m. In order to simplify the analysis,these two parameters are assumed to be equal to 1 and ignored insubsequent calculations.

As can be seen by this equation above, V_(step) _(—) _(idx,m) is basedon NumRows (e.g. 4) unknown values, C_(n,m), with n=0 to 3 in thisexample. Therefore, if four independent step scans are performed withfour independent H sequences applied to the four transmit buffers 806,808, 810, 812, the relationship between V and C can be inverted in orderto estimate the C values from V. In matrix form, this can be written:

V_(m) = H ⋅ C_(m) $V_{m} = \begin{bmatrix}V_{0,m} \\V_{1,m} \\\vdots \\V_{{{NumSteps} - 1},m}\end{bmatrix}$ $H^{{NumSteps},{NumRows}} = \begin{bmatrix}H_{0,0} & \ldots & H_{0,{{NumRows} - 1}} \\\vdots & \ddots & \vdots \\H_{{{NumSteps} - 1},0} & \ldots & H_{{{NumSteps} - 1},{{NumRows} - 1}}\end{bmatrix}$ $C_{m} = \begin{bmatrix}C_{0,m} \\C_{1,m} \\\vdots \\C_{{{NumRows} - 1},m}\end{bmatrix}$

In this formulation, the column vector C_(m) represents the capacitanceof the capacitive pixels in the m^(th) column of the capacitive touchpanel. H is a NumSteps×NumRows matrix, where the n^(th) column of theH-matrix represents the multiplicative sequence applied to the n^(th)transmit row. The optional superscript of H indicates the dimensions ofthe H matrix. V_(m) is a column vector, where the n^(th) entry in thematrix is the n^(th) step scan output of m^(th) RX channel.

In the present application, H is a special form of matrix, called amodified Hadamard matrix. These matrices have the property that:

H ^(T) ·H=NumSteps·I

where I is the NumRows×NumRows identity matrix, and H^(T) is thetranspose of H.

Given the formulation above, and the properties of the H-matrix, therelationship from C_(m) to V_(m) can be inverted in order to extract outthe values of the C_(m) vector from the V_(m) measurements. Using theterminology defined above:

$C_{m} = {\frac{1}{NumSteps}{H^{T} \cdot V_{m}}}$

In the example above, the panel had four rows and the value of NumSteps(equivalently N_(multi)) was also set to four. Therefore, all panel rowswere stimulated during every step scan. In general, the number of panelrows will be larger than the value of N_(multi). In that case, the panelstimulation is broken up into blocks. During each block of N_(multi)step scans, N_(multi) adjacent rows are stimulated with the Hadamardpolarity sequencing described above.

The heatmap assembly block 414, 420 works on each block of N_(multi)scans independently in order to create the complete heatmap output. Forinstance, if there were twelve panel rows and N_(multi) were set tofour, then the first four step scans would be used to stimulate andassemble the first four rows of the capacitive heatmap; the next fourstep scans would be for the fifth through eighth panel rows; and thelast four step scans would be for the ninth through twelfth rows.Therefore, for each block of N_(multi) rows, the heatmap assembly blockoperates in the exact same manner as defined above. However, the outputsof the HAB 414, 420 are mapped to the subsequent rows in the completecapacitive heatmap.

The heatmap assembly block 414, 420 is capable of assembling a32-column-wide heatmap, as there are a total of 32 receiver channelsimplemented in one embodiment. However, in many cases, the capacitivetouch panel used will not have 32 columns, and hence not all 32 receivechannels are used.

Mathematical Extensions for Asymmetric Panel Scanning

As described above, the controller 104 preferably has the capability toperform asymmetric panel scans, where the firmware supporting operationof the controller 104 has the capability to define the number of timeseach row is to be scanned. Given the formulation for asymmetric panelscanning outlined above, the changes to the heatmap assembly operationin order to support this feature are minimal.

As described above, the heatmap is assembled in a blocks of N_(multi)rows. In asymmetric scanning, N_(multi) can vary on a block-by-blockbasis. Therefore, the old equation of:

$C_{m} = {\frac{1}{NumSteps}{H^{T} \cdot V_{m}}}$

is still valid. However, with asymmetric scanning, the dimensions of C,V, and H and the value of NumSteps change on a block-by-block basis.

The I/Q combiner 422 shown in 4 is used to combine the I- and Q-channelheatmaps into a single heatmap. The primary output of the I/Q combiner422 is a heatmap of the magnitude (e.g. Sqrt[I²+Q²]). This is theheatmap that is handed off to the touch back end 134.

The row/column normalizer 424 shown in FIG. 4 is used to calibrate outany row-dependent or column-dependent variation in the panel response.The row/column normalizer 424 has two static control input vectors,identified as RowFac and ColFac. RowFac is an Nrow-by-1 vector, whereeach entry is 1.4 unsigned number (e.g. LSB= 1/16. Range is 0 to 31/16).ColFac is an Ncol-by-1 vector, where each entry has the same dimensionsas RowFac.

If the input data to the Row/Column Normalizer block is labeled asHeatmapIn(m,n), where m is the row index and n is the column index, theoutput of the block should be:

HeatmapOut(m,n)=HeatmapIn(m,n)·RowFac(m)·ColFac(n)

In one embodiment, the controller 104 has the capability to allow RowFacand ColFac to be defined either by OTP bits or by a firmwareconfiguration file. The OTP settings will be used if the manufacturingflow allows for per-module calibration, thus enabling the capability totune the controller 104 on a panel-by-panel basis. If RowFac and ColFaccan only be tuned on a per-platform basis, then the settings from afirmware configuration file will be used instead.

Spectrum Estimation

The spectrum estimation preprocessor 432 operates to determine thebackground levels of interference that couple into the receive channels406 so that the controller 104 may appropriately select transmitfrequencies that are relatively quiet or interference free.

The spectrum estimation preprocessor 432 will generally only be usedduring SEM mode, so it is not part of the standard panel-scanmethodology. Instead, the spectrum estimation preprocessor 432 will beused when conditions indicate that SEM should be invoked. At othertimes, the spectrum estimation preprocessor 432 can be powered down.

Baseline Tracking and Removal Filter

A touch event should be reported when the measured capacitance of acapacitive pixel (or group of pixels) changes by a large enough amountin a short enough period of time. However, due to slow environmentalshifts in temperature, humidity or causes of drift, the absolutecapacitance of a pixel (or group of pixels) can change substantially ata much slower rate. In order to discriminate changes in pixelcapacitance due to a touch event from changes due to environmentaldrift, a baseline tracking filter can be implemented to track thechanges in the baseline (e.g. “untouched” or “ambient” value of thecapacitance), and simple subtraction of the baseline capacitance fromthe input capacitance will yield the change in capacitance due to thetouch event.

FIG. 9 illustrates a baseline tracking filter 900. The filter 900includes a low-pass filter (LPF) 902, a decimator 904 and a combiner906. The input signal to the filter 900 is provided to the combiner 906and the decimator 904. The output signal of the decimator is provided tothe input of the LPF 902. The output of the LPF 902 is combined with theinput signal at the combiner 906. The LPF 902 has an enable input forcontrolling operation of the filter 900.

The LPF 902 in the baseline tracking filter 900 is used to improve theestimate of the baseline capacitance value. One embodiment uses a simplefinite impulse response (FIR) moving average filter of length N (aka“comb filter”), such as:

${H_{N}(z)} = {{\frac{1}{N} \cdot \frac{1 - z^{- N}}{1 - z^{- 1}}} = {\frac{1}{N} \cdot {\sum\limits_{n = 0}^{N - 1}z^{- n}}}}$

Another embodiment a 1-tap infinite impulse response (IIR) filter, alsoreferred to as a modified moving average, with response:

${H_{k}(z)} = \frac{\frac{1}{k}}{1 - {\left( {1 - \frac{1}{k}} \right)z^{- 1}}}$

The FIR embodiment of the filter 902 may be used upon startup andrecalibration of the baseline value, as it can quickly acquire and trackthe baseline value. The IIR embodiment of the filter 902 should be usedonce the baseline value is acquired, as it can be a very computationallyefficient means to implement a low-pass filter, particularly if k ischosen to be a power of 2. By increasing the value of k, one can setchange the signal bandwidth of the filter to arbitrarily small valueswith minimal increase in computational complexity.

Filter 900 has two outputs, labeled “Out” and “Baseline” in FIG. 9. TheBaseline output is the estimate of the current baseline (aka “ambient”or “untouched”) capacitance of the particular panel pixel(s) beingscanned, and the “Out” output is the baseline-corrected value of thatcapacitance measurement. The “Out” value is what should be used in thesubsequent touch-detection logic.

The LPF 902 in FIG. 9 has an enable signal in order to shut down the LPF902 when a touch event is detected. This is provided so that thebaseline output is not corrupted by spurious data, most likely from atouch event. If the enable signal is low, the LPF 902 will hold itsprevious output without updating its output with the incoming data,effectively ignoring the incoming data. Once the enable signal is high,the LPF 902 will continue to update its output with the incoming data.Logic for generating the enable signal is detailed in the followingequation:

Enable=(Out≦PosLPFThresh)&&(Out≧NegLPFThresh)

where PosLPFThresh and NegLPFThresh are configurable parameters.

In a mutual-capacitance scan mode, where a touch event causes areduction in the input data, the NegLPFThresh should be set tok_(T)*Touch Thresh, where 0<k_(T)<1 and TouchThresh is thetouch-detection threshold defined below. These may both be programmableparameters. In a mutual-capacitance scan mode, there is no expectedphysical mechanism that would cause the input data to exhibit a positivetransient. Therefore, PosLPFThresh may be a programmable parameter usedto filter out spurious data, should an unexpected positive transientoccur.

Programmable Update Rate

The timescale of most baseline drift phenomena will be far slower thanthe frame rate of the touch panel scan. For instance, observed baselinedrift devices had timescales on the order of 1 hour or longer, whereasthe frame rate of a current device may be on the order of 200frames/second. Therefore, in order to reduce the computation forbaseline tracking, the controller circuit 104 shall have the capabilityto scale the update rate of the baseline tracking filter 900. The devicemay do this by using the decimator 904 to decimate the data fed to thefilter 900, so that the filter 900 only operates on every N_BTF_decimateframes of heatmap data, where N_BTF_decimate is a programmableparameter. Therefore, the Baseline signal in FIG. 9 will update at thisslower rate. However, the baseline corrected output signal (“Out” inFIG. 9) may be calculated for every frame.

Baseline tracking needs to exercise special care when spectrumestimation mode (SEM) is invoked. SEM may cause a configuration changein the analog front end which in turn will alter the gain in thetransfer function (e.g. from capacitance values to codes) of the touchfront end. This, in turn, may cause abrupt changes in the capacitiveheatmap to occur that could be accidentally interpreted as touch events.

A touch event is detected when the baseline-corrected output exhibits asignificant negative shift. The shift in this output may be larger thana programmable parameter, called TouchThresh. Furthermore, since thecontroller circuit 104 may scan a panel at upwards of 200 Hz and a humanfinger or metal stylus moves at a much slower timescale, a programmableamount of debounce, dubbed TouchDebounce, should also be included.Therefore, before a touch is recognized, the output of the baselinefilter may be more negative than TouchThresh for at least TouchDebounceframes. It is likely that TouchDebounce will be a small value, in orderthat the total touch response time is faster than 10 ms.

Heatmap Noise Estimation

The touch back end 134 requires an estimate of the noise level in thecapacitive touch panel 102 in order to properly threshold the touchblobs during the detection process. The noise level can be detected byobserving noise at the output of the baseline tracking filter as shownin FIG. 10. FIG. 10 shows a first variance estimator 1000 in conjunctionwith the baseline tracking filter 900 of FIG. 9. In FIG. 10, thebaseline tracking filter 900 has its Out output coupled to an input ofthe variance estimator 1000. The variance estimator 1000 includes adecimator 1002, a signal squarer 1004 and a low-pass filter 1006. Thevariance estimator 1000 in this embodiment is simply a mean-squareestimator, as the output of the baseline tracking filter 900 iszero-mean. Hence the mean-square is equal to the variance.

In order to lower the computational requirements for the varianceestimator 900, the data entering the variance estimator can be decimatedin the decimator 1002 by the factor, N_VAR_decimate. The low-pass filter1006 in the variance estimator 1000 may either be a comb-filter or amodified-moving-average filter. The length of the response of the filter1006 may be a programmable parameter, averaging data over as many as 100or more frames. In order to lower memory requirements, the MMA filtermay be preferred.

As with the baseline tracking filter 900, the LPF 1006 in the varianceestimator 1000 has an input for an enable signal. The enable signal islow when the pixel in question is being touched. Otherwise, the varianceestimate will be corrupted by the touch signal. When the enable signalis low, the LPF 1006 should retain state, effectively ignoring the datacoming into the variance estimator 1000.

The output of the variance estimator 1000 is the variance of one singlepixel in the capacitive touch panel 102. Therefore, this provides anindependent variance estimate of each pixel in the panel. To get anestimate of the variance across the panel 102, the controller circuit104 may average the per-pixel variances across the entire frame.

Alternately, if only a single per-frame variance estimate is needed, thecontroller circuit 104 can follow the approach shown in FIG. 10. FIG. 11shows a second variance estimator 1100 in conjunction with the baselinetracking filter 900 of FIG. 9. In FIG. 11, all the per-pixel baselinetracking filters are grouped as baseline tracking filters 900, on theleft in the figure. All the baseline-corrected outputs from the baselinetracking filters 900 are passed to the variance estimator 1100.

Like the variance estimator 1000 of FIG. 10, the variance estimator 1100includes a decimator 1102, a signal squarer 1104 and a low-pass filter1106. The variance estimator 1100 further includes a summer 1108. Thevariance estimator 1100 combines the outputs of the baseline trackingfilters 900 into a single value by summing the baseline-correctedoutputs across the entire frame in the summer 1108. This averaged valueis then passed to the same square-and-filter estimator that wasdescribed above, formed by the signal squarer 1104 and the low-passfilter 1106. Assuming that the noise is uncorrelated frompixel-to-pixel, the output of the variance estimator 1100 is equal tothe sum of all the pixel variances reported by the block diagram in FIG.10. In order to generate the average pixel variance across the panel,this result may be divided by the total number of pixels in thecapacitive touch panel 102. To generate an estimate of thestandard-deviation of the noise, the controller circuitry 104 may takethe square root of the variance.

In one implementation, the controller circuit 104 implements orthogonalmulti-row stimulation of the touch panel. One specific example isdescribed with reference to FIG. 12 in the context of a smartphone 1200(although the techniques may be implemented in any device with a touchpanel). The smartphone 1200 includes a transceiver 1202 and the controlcircuitry 104, including one or more processors 1204, a memory 1206, anda user interface 1208. The transceiver 1202 may be wireless transceiver,and the transmitted and received signals may adhere to any of a diversearray of formats, protocols, modulations, frequency channels, bit rates,and encodings Thus, the transceiver 1202 may support the802.11a/b/g/n/ac standards, the 60 GHz WiGig/802.11TGad specification,Bluetooth, Global System for Mobile communications (GSM), Time DivisionMultiple Access (TDMA), Frequency Division Multiple Access (FDMA), CodeDivision Multiple Access (CDMA), or other wireless access techniques orprotocols.

The processor 1204 executes the orthogonal multi-row stimulation (“OMS”)logic 1210. The OMS logic 1210 may be part of an operating system, anapplication program, firmware, or other logic. The user interface 1208includes a capacitive touch panel 1212 which is divided into a grid ofrows 1214 and columns 1216 (and as also shown, for example, in FIG. 3).For the sake of illustration, the transmitters are connected to the rows1214 and the receivers are connected to the columns 1216, however, thatarrangement may be reversed. At each intersection of row and column(referred to as a pixel), there is a capacitance that is impacted by thepresence or absence of a finger, stylus, or any other conductivetouching object. The capacitance value at each pixel provides the “heatmap” of capacitance across the touch panel 1212, and may be envisionedas a contour map of the touch panel 1212 in which the values are thecapacitance values at each pixel.

Traditionally, to obtain the capacitance value at each pixel, each rowof the touch panel 1212 is sequentially energized (i.e., one at a time)by its transmitter, and the receivers across the row, for each column,determine the capacitance values for the pixels in the energized row.Thus, the touch panel 1212 is scanned one row at a time. Accordingly, ifthere are ‘n’ rows, it takes ‘n’ scans to image the entire touch panel1212. Assuming for the sake of illustration that there is a onemillisecond time window in which to image the entire touch panel 1212(for a frame rate of 1000 frames per second), and there are 10 rows,then each row receives energy for some fraction of the total scan timewindow, e.g., 1/10th of a millisecond. If a faster frame rate isdesired, then the duration of each row scan must be reduced to less than1/10th of a millisecond. Doing so, however, decreases the signal tonoise ratio (SNR) because less time is spent sending power into anyparticular pixel. Accordingly, there is a tradeoff between frame rateand SNR with single row scanning.

The OMS logic 1210, however, energizes multiple rows simultaneously. Themultiple rows may be consecutive or non-consecutive. In addition, theOMS logic 1210 energizes the rows in a linearly independent andorthogonal way that allows the OMS logic 1210 to recover the individualcapacitance values at the multiple pixels over the multiple rows on thesame column. The OMS logic 1210 may energize the touch panel 1210through the touch panel interface 1218. The touch panel interface 1218may be implemented as described above (e.g., with regard to the frontend 132 and back end 134 and FIG. 7, including polarity and amplitudecontrol).

Taking a specific example using two rows, the OMS logic 1210 mayenergize, during a first scan cycle, the first row and the second rowwith positive polarities, resulting in a first receiver measurementalong the column of Row1+Row2. On the second scan cycle, the OMS logic1210 may energize the first row with a positive polarity and the secondrow with a negative polarity, resulting in a second receiver measurementalong the column of Row1−Row2. With two variables and two unknowns,these two equations can be solved to obtain the individual values ofRow1 and Row2: Row1=(first measurement+second measurement)/2); Row2=(first measurement−second measurement)/2.

Note that although two measurements are obtained to determine the twopixel values, one benefit is that the signal to noise ratio (SNR) isincreased. One reason for the increase is that every measurement willinclude some noise, and the averaging of the measurements tends toaverage out the random noise, resulting in less noise influencing theresults. This signal is coherent and does not average out.

As a result, the OMS logic 1210 achieves a higher SNR at the same framerate as the single row at a time scanning technique. Furthermore, theOMS logic 1210 may achieve approximately the same SNR as the single rowscanning technique by reducing the amount of time spent driving eachrow. Thus, the OMS logic 1210 facilitates higher SNR measurements at thesame frame rate, or about the same SNR at faster frame rates, comparedto the single row at a time scanning technique. The OMS logic 1210 mayexecute in response to a command or request (from a host processor, forexample) to increase SNR.

In support of the OMS logic 1210, the memory 1206 may store OMSparameters 1219 that determine the frame rate, desired SNR, drive timefor the rows, or other parameters under which the OMS logic 1210operates. The control circuitry 104 may drive the touch panel withsinusoidal waveforms, square wave waveforms, or other preferablyorthogonal waveform types.

The OMS logic 1210 may scan the touch panel 1212 in consecutive rowsforming blocks. For example, rows 0 then 1, then rows 2 and 3, and soon. Alternatively, the OMS logic 1210 may scan the touch panel 1212 atnon-consecutive rows. The OMS logic 1210 may scan as many rowssimultaneously as the OMS logic 1210 has orthogonal signal sets. Forexample, given 48 orthogonal signal sets, the OMS logic 1210 may scan upto 48 rows simultaneously. In one implementation, the OMS logic 1210supports scanning 1 to 16 rows simultaneously, but other implementationsmay scan more than 16 rows at a time.

In one implementation, the touch panel interface 1218 includes an outputdriver for each row 1214. Each driver may use a sinusoidal waveform ofthe same frequency or different frequencies, or more generally useorthogonal waveforms to drive different rows. The touch panel interface1218 may further include independent gain control on each driver outputin order to control the polarity and gain of the waveforms. Thus, theorthogonality of the waveforms may be accomplished by polarity control,amplitude control (e.g., amplitude modulation), phase control, waveformshape control, or in any other way for building orthogonal signals.

In one implementation, the OMS logic 1210 scans the touch panel 1208using Hadamard codes implemented using amplitude modulation. In thisregard, the amplitude modulation creates signals that are +1 or −1waveforms (e.g., as opposed to complex valued waveforms). With respectto the signal measured at the receivers, the driving signals areadditive (e.g., driving with +1, +1 signals results in about twice thesignal (e.g., a +2 signal) at the receiver, and driving with +1, −1signals results in very low level of signal at the receiver). One goalis to maximize the dynamic range at the receiver. In that regard, it isdesired for the useful part of the signal to take up the dynamic rangeof the receiver. Accordingly, for some of the higher order multi-rowstimulations, the OMS logic 1210 employs signal sets that (when arrangedin matrix form) have minimized absolute value of column sums, so thatthe gain on the receiver pre-amps in the touch panel interface 1218 donot need to be reduced significantly and expose the signal toquantization noise that detrimentally impacts the receiver measurements.The orthogonal signal sets may be represented by Hadamard matrices ormodified Hadamard matrices. The Hadamard matrices have the property thatH *H′=N*I (for N rows), in other words, the rows are orthogonal.

The H4 Hadamard matrix, below, shows one alternative, with a maximumabsolute value of column sum of 4. The second H4 matrix, H′4, below is amodified Hadamard matrix in which the maximum absolute value of columnsum is 2. Accordingly, the peak amplitude received is 2. Therefore, theamplifier gain can be increased, which beneficially increases dynamicrange and SNR for the subsequent analog to digital conversion. Suchmatrices may be found by a brute force or exhaustive search for anynumber of rows.

$\underset{{{Max}({{{ColSum}\lbrack H_{4}\rbrack}})} = 4}{H_{4} = \begin{bmatrix}{+ 11} & {+ 1} & {+ 1} & {+ 1} \\{+ 1} & {- 1} & {+ 1} & {- 1} \\{+ 1} & {+ 1} & {- 1} & {- 1} \\{+ 1} & {- 1} & {- 1} & {+ 1}\end{bmatrix}}$$\underset{{{Max}({{{ColSum}\lbrack H_{4}^{\prime}\rbrack}})} = 2}{H_{4}^{\prime} = \begin{bmatrix}{- 1} & {- 1} & {- 1} & {- 1} \\{+ 1} & {- 1} & {+ 1} & {- 1} \\{+ 1} & {+ 1} & {- 1} & {- 1} \\{+ 1} & {- 1} & {- 1} & {+ 1}\end{bmatrix}}$

FIG. 13 shows a graph 1300 of the number of sequences used versus lowestmaximum absolute value of column sum 1302. Finding the matrices withlowest maximum absolute value of column sums keeps the column sum (andtherefore the amplitude at the receiver) from growing linearly or fasterthan linearly, and instead grows only at about the square root of thenumber of sequences used.

Turning ahead to FIG. 17, that Figure shows an example of a touch panelgrid 1700 scanned using the H′4 matrix. In this example, the touch panelgrid 1700 includes eight rows 1702 and nine columns 1704. The pixels ineach of the nine columns that are energized at the same time are labeledA, B, C, and D. As illustrated in FIG. 17 the OMS logic 1210 may drivefour rows (all the way across the nine rows) simultaneously on the firstscan with −1, +1, +1, +1 signals; then the same four rows on the secondscan with −1, −1, +1, −1 signals; then the same four rows on the thirdscan with −1, +1, −1, −1 signals; then the same four rows on the fourthscan with −1, −1, −1, +1 signals. After taking the receiver measurementsafter each scan, the OMS logic 1210 processes the four receivermeasurements for each of the nine columns to obtain the four individualpixel values A, B, C, and D in each of the nine columns by solving forfour variables using the four orthogonal measurements −A+B+C+D;−A−B+C−D; −A+B−C−D; −A−B−C+D.

An example set of matrices that the OMS logic 1210 may use is givenbelow (transposed with respect to the examples noted above), along witha table showing the maximum row sum. Note that the Hadamard matrices aregenerally of size 4k, (e.g., 8), but that any number of rows (e.g., 7)may be scanned. In the case where fewer rows are scanned than the matrixsupports, the OMS logic 1210 may determine which rows or columns fromthe Hadamard matrices to apply, giving consideration to minimizing theamplitude of the received signal. Examples are given below for the rowsto choose for non-integer multiples of 4 rows (e.g., scanning 6 rowswith an 8×8 matrix, use the first six rows of the 8×8 matrix notedbelow). As another specific example, scanning a touch panel with 15rows, the OMS logic 1210 may use a 4×4 matrix to scan the first, second,and third sets of four rows, then obtain four measurements again overthe last three rows using the first three rows of the 4×4 matrix to scanthe remaining three rows (thereby taking four measurements to solve forthree variables, but gaining SNR though an extra measurement is made).

As noted above, the OMS logic 1210 may use Hadamard sequences tomodulate the polarity of the transmitters during individual step scans.The format for a Hadamard matrix is:

$H^{{NymSteps},{NumRows}} = \begin{bmatrix}H_{0,0} & \ldots & H_{0,{{NumRows} - 1}} \\\vdots & \ddots & \vdots \\H_{{{NumSteps} - 1},0} & \ldots & H_{{{NumSteps} - 1},{{NumRows} - 1}}\end{bmatrix}$

The superscript of H (if shown) is used to depict the dimensions of theHadamard matrix. Using this terminology, each column in the matrix Hrepresents a single Hadamard sequence. Properties of Hadamard matrices,include:

All entries in the H matrix are either +1 or −1.

All columns are orthogonal to every other column. (Similarly, all rowsare orthogonal to every other row.).

Valid values of NumSteps is 1, 2, or any integer multiple of 4.

NumRows≦NumSteps.

Given this notation, HNumSteps,NumRows(j) is the jth column vector ofHNumSteps,NumRows.

Below is a list of Hadamard matrices that the OMS logic 1210 maysupport. The matrices may be pre-stored in the memory 1206. In thematrices below, only the polarity of the entries is shown; therefore ‘+’indicates a value of +1 and ‘−’ indicates a value of −1.

As will be detailed in the matrices below, given a matrix H^(N,N), whereN is a multiple of 4, one can construct H^(N,N−1), N^(N,N−2), H^(N,N−3)by choosing the first N−1, N−2, or N−3 columns of the full N-by-Nmatrix. Therefore, only H^(N,N) need be stored on-chip (e.g., in thememory 1206).

The table below for each H^(N,k) matrix shows the maximum of theabsolute value of the row-sums of the matrix. The control circuitry 104may use the maximum sum parameter for dynamic range scaling within theanalog front end to the touch panel 1212.

H^(1,1) and H²′:

$\left. {{\left. {{\left. {{\left. \mspace{79mu} {{H^{1,1} = \lbrack + \rbrack}\mspace{79mu} {H^{2,2} = \begin{bmatrix} + & + \\ + & - \end{bmatrix}}\mspace{79mu} {H^{2,1} = \begin{bmatrix} + \\ + \end{bmatrix}}\mspace{79mu} a} \right)\mspace{14mu} H^{4,4}}\mspace{79mu} {H^{4,4} = \begin{bmatrix} + & - & + & + \\ + & + & + & - \\ + & - & - & - \\ + & + & - & + \end{bmatrix}}\mspace{79mu} {H^{4,3} = \left\lbrack {H^{4,4}\left( {1:3} \right)} \right\rbrack}\mspace{79mu} b} \right)\mspace{14mu} H^{8,8}}\mspace{79mu} {H^{8,8} = \begin{bmatrix} - & + & + & + & + & + & - & + \\ - & - & + & - & + & - & - & - \\ - & + & - & - & + & + & + & - \\ - & - & - & + & + & - & + & + \\ - & + & + & + & - & - & + & - \\ - & - & + & - & - & + & + & + \\ - & + & - & - & - & - & - & + \\ - & - & - & + & - & + & - & - \end{bmatrix}}\mspace{79mu} {H^{8,7} = \left\lbrack {H^{8,8}\left( {1:7} \right)} \right\rbrack}\mspace{79mu} {H^{8,6} = \left\lbrack {H^{8,8}\left( {1:6} \right)} \right\rbrack}\mspace{79mu} {H^{8,5} = \left\lbrack {H^{8,8}\left( {1:5} \right)} \right\rbrack}\mspace{79mu} c} \right)\mspace{14mu} H^{12,12}}\mspace{79mu} {H^{12,12} = \begin{bmatrix} - & + & - & + & - & - & - & - & + & - & + & - \\ - & - & + & + & + & + & + & - & + & - & - & - \\ - & + & + & - & - & + & + & + & + & - & + & + \\ - & - & - & - & + & - & + & + & - & - & + & - \\ - & + & + & + & + & + & - & + & - & + & + & - \\ - & + & - & - & - & + & + & - & - & + & - & - \\ - & + & - & + & + & - & + & + & + & + & - & + \\ - & - & - & + & - & + & - & + & - & - & - & + \\ - & - & + & + & - & - & + & - & - & + & + & + \\ - & - & + & - & - & - & - & + & + & + & - & - \\ - & + & + & - & + & - & - & - & - & - & - & + \\ - & - & - & - & + & + & - & - & + & + & + & + \end{bmatrix}}\mspace{79mu} {H^{12,11} = \left\lbrack {H^{12,12}\left( {1:11} \right)} \right\rbrack}\mspace{79mu} {H^{12,10} = \left\lbrack {H^{12,12}\left( {1:10} \right)} \right\rbrack}\mspace{79mu} {H^{12,9} = \left\lbrack {H^{12,12}\left( {1:9} \right)} \right\rbrack}\mspace{79mu} d} \right)\mspace{14mu} H^{16,16}$$H^{16,16} = \left\lbrack \begin{matrix} - & + & - & + & - & - & + & + & + & + & + & + & + & - & - & + \\ - & - & - & - & - & + & + & - & + & - & + & - & + & + & - & - \\ - & + & + & - & - & - & - & - & + & + & - & - & + & - & + & - \\ - & - & + & + & - & + & - & + & + & - & - & + & + & + & + & + \\ - & + & - & + & + & + & - & - & + & + & + & + & - & + & + & - \\ - & - & - & - & + & - & - & + & + & - & + & - & - & - & + & + \\ - & + & + & - & + & + & + & + & + & + & - & - & - & + & - & + \\ - & - & + & + & + & - & + & - & + & - & - & + & - & - & - & - \\ - & + & - & + & - & - & + & + & - & - & - & - & - & + & + & - \\ - & - & - & - & - & + & + & - & - & + & - & + & - & - & + & + \\ - & + & + & - & - & - & - & - & - & - & + & + & - & + & - & + \\ - & - & + & + & - & + & - & + & - & + & + & - & - & - & - & - \\ - & + & - & + & + & + & - & - & - & - & - & - & + & - & - & + \\ - & - & - & - & + & - & - & + & - & + & - & + & + & + & - & - \\ - & + & + & - & + & + & + & + & - & - & + & + & + & - & + & - \\ - & - & + & + & + & - & + & - & - & + & + & - & + & + & + & + \end{matrix} \right\rbrack$      H^(16, 15) = [H^(16, 16)(1 : 15)]     H^(16, 14) = [H^(16, 16)(1 : 14)]     H^(16, 13) = [H^(16, 16)(1 : 13)]

The matrices listed above have column sums as follows:

H^(1, 1) 1 H^(2, 2) 2 H^(4, 3) 3 H^(4, 4) 2 H^(8, 5) 3 H^(8, 6) 4H^(8, 7) 5 H^(8, 8) 4 H^(12, 9) 3 H^(12, 10) 4 H^(12, 11) 5 H^(12, 12) 4H^(16, 13) 5 H^(16, 14) 6 H^(16, 15) 5 H^(16, 16) 4

Note also that the OMS logic 1210 may use complex Hadamard matrices thatcan be constructed for any N, as shown in the example below 6×6 Fouriermatrix:

$H_{6} = \begin{bmatrix}1 & 1 & 1 & 1 & 1 & 1 \\1 & {- 1} & j & {- j} & {- j} & j \\1 & j & {- 1} & j & {- j} & {- j} \\1 & {- j} & j & {- 1} & j & {- j} \\1 & {- j} & {- j} & j & {- 1} & j \\1 & j & {- 1} & {- 1} & j & {- 1}\end{bmatrix}$

In that regard, the touch panel interface 1218 may include two digitalto analog converters that generate the inphase and quadrature (I/Q)signals. Thus, the OMS logic 1218 may effective drive the touch panel1212 with a complex H-matrix with +1/−1/j/-j entries, and this canextend to matrices of size 2k. The I/Q signals can be sine waves, forexample. Column sums can be further reduced using I/Q signals as shownin the table below:

Optimal Optimal sum with sum with N complex H real H 4 2 2 6 2.83 4 82.83 4 10 3.16 4 12 4 4

Furthermore, the matrices may have zero-valued entries without addingany hardware complexity, though there may be a slight SNR penalty fromlowered signal energy. The example below shows an example of a 6×6matrix including zeros.

$H_{6} = \begin{bmatrix}{- 1} & {- 1} & {- 1} & {- 1} & {- 1} & 0 \\1 & {- 1} & 1 & {- 1} & 0 & 1 \\1 & 1 & {- 1} & 0 & {- 1} & 1 \\1 & {- 1} & 0 & 1 & {- 1} & {- 1} \\1 & 0 & {- 1} & {- 1} & 1 & {- 1} \\0 & 1 & 1 & {- 1} & {- 1} & {- 1}\end{bmatrix}$

FIG. 14 shows an example of the logic 1400 that the OMS logic 1210 mayimplement. The OMS logic 1210 may drive a first and a second row in thetouch panel simultaneously, a first time (1402). The OMS logic 1210 mayobtain a first signal measurement along a column intersecting the firstand second rows (1404). The OMS logic 1210 may then energize the firstand the second row in the touch panel simultaneously, a second time(1406) and obtain a second signal measurement along the column (1408).The OMS logic 1210 may then determine a first pixel value and a secondpixel value along the column from the first signal measurement and thesecond signal measurement (1410). The logic 1400 may be extended tocover any number of simultaneously scanned rows (e.g., 4 or 8 rows at atime) using the matrices described above.

The memory 1206 may also store asymmetric scanning (AS) logic 1220 thatoperates as directed or configured by the AS parameters 1222. The ASlogic 1220 may be part of or called by the OMS logic 1210, as examples,or may be a separate program or set of firmware instructions executed bythe processor 1204. The AS logic 1220 helps address the fact thatcapacitive touch panels may have many input/output (I/O) lines to bescanned across the full touch panel, but that, in many cases, only asubset of the entire touch panel has “interesting” activity presentwithin it. Accordingly, the AS logic 1220 may avoid the resource cost ofscanning the entire touch panel 1212, and thereby save power andincrease responsiveness and effective frame rate. Furthermore, touchactivity from a small object (such as a stylus or small finger) wouldhave reduced signal strength, and the AS logic 1220 may beneficiallyallocate additional scan time to that region to better read andfacilitate better interpretation of the low signal strength signals.

In that regard, the AS logic 1220 may recognize the regions in whichcertain activity of interest is occurring on the touch panel 1212, andadaptively reconfigure the scanning to spend more or less time in suchregions. As a result, the AS logic 1220 helps provide high SNR and higheffective frame rate at low power because the AS logic 1220 may scanjust a subset of the full touch panel 1212 to focus on activity ofinterest.

The AS logic 1220 may be configured (e.g., through the AS parameters1222) to determine that certain categories of activity on the touchpanel 1212 warrant focused attention through asymmetric scanning (e.g.,increased SNR on demand for specific areas). In one embodiment, anyinteraction (e.g., by touch or hover) qualifies as a category forfocused attention, while areas that are not presently touched qualify asa category for which no focused attention is needed. However, the ASlogic 1220 may still scan those areas to determine when the currentlyuntouched areas become touched. Additionally or alternatively, areas onthe touch panel 1212 with low SNR (e.g., the signal is low or the noiseis high) may qualify as focused attention category areas. Thus, forexample, the AS logic 1220 may attempt to compensate for high noise incertain areas of the touch panel 1212 by giving them focused attention.As another example, the AS logic 1220 may attempt to better determineactivity for low signal areas of the touch panel 1212, such as mightresult from a ‘hover touch’ (e.g., an interaction with the touch panel1212 without physical contact on the touch panel 1212) or the use of afine tip stylus. In other words a touch on a capacitive touch panel maybe a matter of signal strength and proximity rather than a matter ofphysical deformation or actual contact with the touch panel. A furtherbenefit of the asymmetric scan technique is that areas of the panel thathave no interesting activity may not need to be scanned as frequently,as long, or with as much energy, leading to frame rate improvements, andmore generally to the flexibility to balance performance, accuracy,frame rate, and power consumption for the overall panel scanning task.

In one implementation, the AS logic 1220 supports asymmetric panelscanning by scanning any region of interest (e.g., particular rows onthe touch panel 1212) more frequently than other rows. Note thatalthough an entire row at a time may be driven, if only particularpixels in the row are of interest (e.g., are included in the region ofinterest), then the control circuitry 104 may power down the receiversfor the columns in which the pixels exist to save power andcomputational resources to determine pixel values in columns that arenot of interest. The achievable SNR of a pixel in a given row isdirectly proportional to the number of step scans over which its row isstimulated. By default, this value (stored, e.g., as an AS parameter1222) is equal to “Nmulti,” but under certain scenarios the AS logic1220 may determine that additional SNR is warranted for a specificregion(s) of the panel meeting certain criteria such as those identifiedabove.

Accordingly, the AS logic 1220 may determine that certain rows in thetouch panel 1212 will be stimulated with additional scan steps beyondthe number given by the Nmulti parameter for the entire frame scan. Thenumber of scan steps for the rows forms an asymmetric scan map 1224 forthe touch panel 1212. Furthermore, the AS logic 1220 may follow selectedrules, any of which may be made mandatory or optional, and which may berepresented in the AS parameters 1222 (or in other ways) whendetermining the asymmetric scan map 1224. Example rules include:

Rule 1) The AS logic 1220 should perform asymmetric scan on a row-by-rowbasis. In other words, all pixels in a given row shall be stimulated inan identical fashion.

Rule 2) The number of scan steps that any given row can be stimulated(given, for example by the “Nscan” parameter in the AS parameters 1222)may be equal to one of the following values: {0, 1, 2, 4, 8, 12, 16}.

Rule 3 (optional) The number of rows simultaneously stimulated (i.e.,Nmulti) may be equal to an integer multiple of the number of step scansthat those rows should be stimulated (i.e., as given by the Nscanparameter among the AS parameters 1222). In the asymmetric scan maps1224, this manifests as the constraint that there be an integer multipleof Nscan adjacent rows with the same value of Nscan.

Some examples asymmetric scan maps 1224 and resultant control flows aredescribed next. In view of Rule 1, the scan map 1224 may be specified asa 1-dimensional vector. For the purposes of illustration, however, thescan maps 1224 are shown as a 2-d matrix representing the twodimensional touch panel.

FIG. 5 shows an example of a scan map 500. The eight rows are labeled0-7 and the five columns are labeled 0-4. In each pixel (e.g., pixel502), there is a number, Nscan, (e.g., “2”) indicating the number ofstep scans that the AS logic 1220 will perform in that pixel. The scanmap 500 follows the 3 rules outlined above. It can be seen by inspectionthat Rules 1 and 2 are observed. Furthermore, it can be seen thatoptional Rule 3 is observed, as there are 4 adjacent rows that haveNscan=4 (the rows 504) and four adjacent rows that have Nscan=2 (therows 506 and 508).

Based on the example scan map 500, the AS logic 1220 may implement thefollowing step scan instructions for scanning the touch panel 1212:

Hadamard sequence used (see above concerning the OMS Step Scan logic1210 for more details on Number Tx Rows Active the Hadamard matrices) 10, 1 H2, 2 (1) 2 0, 1 H2, 2 (2) 3 2, 3 H2, 2 (1) 4 2, 3 H2, 2 (2) 5 4,5, 6, 7 H4, 4 (1) 6 4, 5, 6, 7 H4, 4 (2) 7 4, 5, 6, 7 H4, 4 (3) 8 4, 5,6, 7 H4, 4 (4)

In the table above, the AS logic 1220, for step scans 1 and 2, performsan Nmulti=2 scan of rows 0 and 1. The AS logic 1220 also, for steps 3and 4, performs the same scan on rows 3 and 4. The AS logic 1220, forsteps 5 to 8, performs an Nmulti=4 scan of rows 4 to 7. In other words,the scan map 500 results in the AS logic 1220 performing an asymmetricscan of the touch panel 1212 in a very efficient manner. The AS logic1220 has effectively partitioned the touch panel 1212 into sub-panels,and uses the OMS logic 1210 noted above to perform the scanning of eachsub-panels (e.g., each set of rows 504, 506, and 508).

FIG. 6 shows another example of a scan map 600 that the AS logic 1220may implement, although it may be somewhat less efficient than the scanmap 500. The scan map 600 includes row sets 602, 604, 606, and 608.

In the example shown in FIG. 6, the scan map 600 is modified slightlycompared to the scan map 500. In particular, the Nscan parameter for therow that is part of row set 606 is reduced from 4 to 2. The scan map 600follows the Rules 1 and 2 above, but does not follow the optional Rule3, as there are five adjacent rows with Nscan=2 and three adjacent rowswith Nscan=4.

The AS logic 1220 may execute more scan sequence steps for the scan map600 than in the example of FIG. 5. One example is:

Step Scan Number Tx Rows Active Hadamard sequence used 1 0, 1 H2, 2 (1)2 0, 1 H2, 2 (2) 3 2, 3 H2, 2 (1) 4 2, 3 H2, 2 (2) 5 4 H2, 1 (1) 6 4 H2,1 (2) 7 5, 6, 7 H4, 3 (1) 8 5, 6, 7 H4, 3 (2) 9 5, 6, 7 H4, 3 (3) 10 5,6, 7 H4, 3 (4)

In this example, not following optional Rule 3 resulted in the AS logic1220 using a larger number of scan steps (10) than in the previousexample (8).

Turning ahead to FIG. 15, that FIG. 15 shows an example of logic 1500that the AS logic 1220 may implement. The AS logic 1220 retrieves the ASparameters 1222 and scan map 1224, including as examples, Nmulti, andNscan (1502). The AS logic 1220 may also receive an identification ordetermine one or more regions of interest on the touch panel 1212 forasymmetric scanning (e.g., to increase SNR in that region) (1504). Thenumber of step scans per row may be increased in an attempt to increasethe SNR to any desired level (e.g., to 2 step scans, 4, 8, 12, 16, andso on according to the orthogonal signal options noted above withrespect to the OMS logic 1210). In some implementations, the SNRincrease is proportional to the number of step scans used. As a result,it is possible to determine the number of steps scans needed to achievea target SNR. The AS logic also determines the orthogonal signals fordriving the touch panel 1212 (1506). For example, the AS logic 1220 mayuse the Hadamard matrices identified above to drive the sets of rows asidentified in the scan map. The scan map may be constructed to provideadditional step scans in the regions of interest on the touch panel1212. The AS logic 1220 then executes asymmetric scanning of the touchpanel 1212 using the orthogonal signals according to the scan map andthe AS parameters 1222 (1508) to focus on the region(s) of interest.

In some implementations, the AS logic 1220 collects asymmetric scanrequests from the host or other higher level logic, while the controlcircuitry 104 is performing regular, non asymmetric scans of the touchpanel 1212. For each area where interaction with the touch panel 1212 isdetected (e.g., an area referred to as a “blob” due to decreases in rawcapacitance value (or increases in delta capacitance value, untouchedminus touched) in the heat map across multiple pixels at or near wherean interaction with a finger or stylus (as examples) is occurring), theAS logic 1220 may determine the SNR (e.g., using noise estimates from anon active region of the touch panel 1212). The AS logic 1220 may then,if the SNR is below a predefined target SNR (e.g., because the signal istoo low), request (e.g., initiate) increased SNR in the area of the blobthrough asymmetric scanning. If the SNR then increases past a secondpredefined threshold, then the AS logic 1220 may stop the asymmetricscan in the blob region, e.g., because the SNR is now sufficient totrack the interaction without additional focus through asymmetricscanning.

The AS logic 1220 (or other logic in the system) may also predict theblob position and request increased SNR in the predicted position. Forexample, the AS logic 1220 may use motion estimation for the blob overtime to estimate velocity and thus the next predicted position. Betweenscans of the touch panel 1212, the blob may be recognized using a shaperecognition algorithm, or by closeness to the last blob position(because blobs do not tend to move quickly in comparison to the scanframe rate). For example, the predicted position may be the predictedposition in one to two frames (or some other configurable parameter inthe AS parameters 1222) in the future. The predicted position may beidentified by rows, with a configurable parameter number of additionalrows above and/or below the predicted position. Another parameter, acapacitance threshold, may determine whether any part of the touch panelarea belongs to the blob. The AS logic 1220 may also find the connectedcomponents of touch panel areas above the capacitance threshold toidentify the blob. The SNR of the blob, for determining when to start orstop asymmetric scanning, may be determined by the peak (highest deltacapacitance value) pixel in the blob, squared, and dividing by the noisevariance estimate. The AS logic 1220 may also communicate with otherlogic in the system, to inform the other logic about how the asymmetricscanning was done. For example, the AS logic 1220 may communicate thenumber of scan steps per row, the measured capacitance data, noiseestimates, or any other data to other logic in the system. In someimplementations, the system may perform its analysis not on rawcapacitance values, but on delta capacitance: the difference betweencapacitance when the touchscreen is not touched, and the currentreading. The current reading (the raw capacitance) decreases in thepresence of a touch.

FIG. 16 shows blob position prediction using an example of series 1600of frames 1602, 1604, 1606 (of 15 columns and 10 rows) over time inwhich a blob 1608 exists. The capacitance values of the pixels in theblob are noted in the frame 1600. The values are for illustration onlyand not meant to be representative of actual measurements. The AS logic1220 has predicted the velocity vector 1610 (in this example, one pixelto the right and down) and has predicted a next location 1612 for theblob. The AS logic 1220 has established buffer rows 1614, 1616, 1618that are also asymmetrically scanned as a guard on the estimatedposition 1612 to protect against unexpected changes in velocity or nextposition of the blob 1608. The predicted next location 1612 and thebuffer rows 1614-1618 thus identifying the rows over which asymmetricscanning may occur in an upcoming frame. The AS logic 1220 may establishany number of buffer rows or columns above the predicted location, belowthe predicted location, to the left or to the right, or any combinationthereof. Column processing logic may be enabled for the buffer columns,and disabled for the remaining columns, for example. The number ofbuffer rows may increase as the predicted velocity vector increases.

One motivation for performing blob position prediction is systemprocessing delays. In particular, after the AS logic 1220 receives arequest for asymmetric scan, the blob of interest may have moved.Therefore the region of interest may not be exactly the same region ofinterest originally specified for asymmetric scan. Accordingly, whenposition prediction is enabled (e.g., as set by an activation parameterin the AS parameters 1222), the AS logic 1220 may take the blob movementinto account by predicting where the blob will be by the time thatasymmetric scan starts. In other words, given a prediction of blobmotion (e.g., a velocity vector) and the time until the scan starts, theAS logic may determine an adjusted region of interest that is predictedto include the blob when the asymmetric scan is actually carried out.

After the asymmetric scan, the results are returned to the asymmetricscan requesting logic. Per row, the requesting logic thus knows what thenoise estimate is, as it may vary across the rows as a result of theasymmetric scan. The requesting logic may then determine the blob shapeand location based on the SNR as noted above. When the SNR is above athreshold, then the requesting logic may end the asymmetric scan. Therequesting logic may also implement debouncing to prevent reactivationof asymmetric scan between individual frames. In one implementation, therequesting logic may wait to have two or three frames (or some otherconfigurable debouncing parameter number) with strong SNR before it endsasymmetric scan, or some configurable number of frames with low SNRbefore it begins asymmetric scan. When there are multiple blobs on thesame row, the AS logic 1220 may select the number of step scans neededto try to achieve a desired level of SNR for any particular blob (e.g.,to increase the SNR for the weakest blob to a desired level).

The methods, devices, and logic described above may be implemented inmany different ways in many different combinations of hardware, softwareor both hardware and software. For example, all or parts of the systemmay include circuitry in a controller, a microprocessor, or anapplication specific integrated circuit (ASIC), or may be implementedwith discrete logic or components, or a combination of other types ofanalog or digital circuitry, combined on a single integrated circuit ordistributed among multiple integrated circuits. All or part of the logicdescribed above may be implemented as instructions for execution by aprocessor, controller, or other processing device and may be stored in atangible or non-transitory machine-readable or computer-readable mediumsuch as flash memory, random access memory (RAM) or read only memory(ROM), erasable programmable read only memory (EPROM) or othermachine-readable medium such as a compact disc read only memory (CDROM),or magnetic or optical disk. Thus, a product, such as a computer programproduct, may include a storage medium and computer readable instructionsstored on the medium, which when executed in an endpoint, computersystem, or other device, cause the device to perform operationsaccording to any of the description above.

The processing capability of the system may be distributed amongmultiple system components, such as among multiple processors andmemories, optionally including multiple distributed processing systems.Parameters, databases, and other data structures may be separatelystored and managed, may be incorporated into a single memory ordatabase, may be logically and physically organized in many differentways, and may implemented in many ways, including data structures suchas linked lists, hash tables, or implicit storage mechanisms. Programsmay be parts (e.g., subroutines) of a single program, separate programs,distributed across several memories and processors, or implemented inmany different ways, such as in a library, such as a shared library(e.g., a dynamic link library (DLL)). The DLL, for example, may storecode that performs any of the system processing described above. Whilevarious embodiments of the invention have been described, it will beapparent to those of ordinary skill in the art that many moreembodiments and implementations are possible within the scope of theinvention. Accordingly, the invention is not to be restricted except inlight of the attached claims and their equivalents.

1.-20. (canceled)
 21. A device comprising: a touch panel interface configured to communicate with a touch panel; memory configured to store a scan map, the scan map configured to: define a first scan frequency for a first region of the touch panel; and define a second scan frequency for a second region of the touch panel, the second scan frequency different from the first scan frequency; and scan control circuitry in communication with the touch panel interface and the memory, the scan control circuitry configured to: access the scan map to determine the first and second scan frequencies; and responsive to the scan map: scan the first region of the touch panel at the first frequency; and scan the second region of the touch panel at the second frequency.
 22. The device of claim 21, where: the first region comprises a first set of rows of the touch panel; and the second region comprises a second set of rows of the touch panel.
 23. The device of claim 22, where: the first set of rows is larger than the second set of rows; and the first frequency is greater than the second frequency.
 24. The device of claim 21, where: the scan map comprises step scans, the step scans are configured to form a repeating scan order for the touch panel; the scan map is configured to define the first and second scan frequencies by: defining a first number the step scans for the first region; and defining a second number the step scans for the second region.
 25. The device of claim 21, where the scan control circuitry is further configured to: receive noise information for the touch panel; and responsive to the noise information, determine to adjust the first scan frequency, the second scan frequency, or both.
 26. The device of claim 25, where the noise information comprises a captured signal-to-noise ratio (SNR) for the first region.
 27. The device of claim 26, where the scan control circuitry is configured determine to adjust the first scan frequency by comparing the captured SNR to a target SNR stored in the memory.
 28. A method comprising: responsive to a scan map stored in memory, determining a first scan frequency for a first region of a touch panel; responsive to the scan map, determining a second scan frequency for a second region of the touch panel; scanning the first region of the touch panel at the first scan frequency; and scanning the second region of the touch panel at the second scan frequency.
 29. The method of claim 28, where: determining the first scan frequency comprises determining a first number of step scans for the first region; and determining the second scan frequency comprises determining a second number of step scans for the second region.
 30. The method of claim 28, further comprising receiving noise information for the touch panel.
 31. The method of claim 30, further comprising: responsive to the noise information, determining to adjust the first scan frequency, the second scan frequency, or both.
 32. The method of claim 31, where the noise information comprises a captured signal-to-noise ratio (SNR) for the first region.
 33. The method of claim 32, further comprising adjusting the first scan frequency responsive to a comparison of the captured SNR to a stored target SNR.
 34. The method of claim 31, further comprising adjusting the first scan frequency; where: the noise information comprises a noise estimate for the second region; the first region comprises an active region of the touch panel, the active region of the touch panel comprising a region where a touch is currently sensed; and the second region comprises a non-active region of the touch panel.
 35. A device comprising: a touch panel interface configured to communicate with a touch panel; memory configured to store a scan map, the scan map configured to define scan frequencies for panel regions of the touch panel; and scan control circuitry in communication with the touch panel interface and the memory, the scan control circuitry configured to: scan the touch panel in accord with the scan map; responsive to the scan, receive noise information for touch panel; and determine to adjust a first scan frequency for a first region of the touch panel among the panel regions, responsive to the noise information.
 36. The device of claim 35, where the noise information comprises a determined signal-to-noise ratio (SNR) for the first region.
 37. The device of claim 36, where the scan control circuitry is configured to determine to adjust the first scan frequency by comparing the determined SNR to a target SNR.
 38. The device of claim 37, where: the determined SNR is greater than the target SNR; and the scan control circuitry is further configured to adjust the first scan frequency by reducing the first scan frequency.
 39. The device of claim 37, where the scan control circuitry is further configured to adjust the first scan frequency by increasing a number of step scans in the scan map for the first region.
 40. The device of claim 35, where: the first region comprises an active region of the touch panel, the active region of the touch panel comprising a region where a touch is currently sensed; and the noise information comprises a noise estimate for a non-active region of the touch panel. 